perm filename CRE.DOC[CRE,BGB] blob sn#033844 filedate 1973-04-09 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00026 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00004 00002	SAILON NUMBER 71.		                    DRAFT CRE MANUAL.
 00007 00003	INTRODUCTION.
 00009 00004	I. A. DATA STRUCTURE.
 00012 00005	TYPES OF NODES.
 00016 00006	CRE SUB-STRUCTURES:
 00017 00007	VECTOR ARC NODE FORMAT.
 00021 00008	THE VECTOR/ARC/VERTEX NODE.
 00024 00009	FILM NODE FORMAT.
 00031 00010	IMAGE NODE FORMAT.
 00035 00011	THE ALGORITHM.
 00037 00012	THRESHOLDING.
 00039 00013	CONTOURING.
 00042 00014	PERFORMANCE
 00043 00015	ALPHABETIC SUMMARY OF TELETYPE COMMANDS.
 00045 00016	SUMMARY OF BASIC COMMANDS.
 00046 00017	TELEVISION PICTURE IO COMMANDS.
 00047 00018	LINK FOLLOWING COMMANDS  &  NODE CONTENTS DISPLAY.
 00050 00019	DISPLAY WINDOW SCROLLING COMMANDS.
 00052 00020	OPERATIONAL SUMMARY OF CRE TELETYPE COMMANDS.
 00053 00021	CART CONTROL COMMANDS  &  OPERATING THE CART.
 00056 00022	II. FILE FORMATS.
 00059 00023	V. SAIL INTERFACING.
 00062 00024	EDITORIAL REMARKS.
 00066 00025	CODE DOCUMENTATION.
 00069 00026	REFERENCES.
 00070 ENDMK
⊗;
SAILON NUMBER 71.		                    DRAFT CRE MANUAL.


STANFORD ARTIFICIAL INTELLIGENCE LABORATORY	        JANUARY 1973.
OPERATING NOTE NUMBER 71.



                          - - - DRAFT - - -
              Contour-Region-Edge Image Representation.


                          Bruce g. Baumgart


ABSTRACT:

	A  contour-region-edge,  CRE,  image representation is stated
and an algorithm for converting a digital television image into  this
format  is  explained. An implementation of the algorithm is the main
routine of a program  called  Cart's  Eye,  CRE;  auxiliary  routines
provide cart and turntable control, TV  camera input, image display, and
Xerox printer output. Potential application of CRE as a step
in object perception and vehicle navigation is discussed.


	CONTENTS:

		I.
		    A. 	DATA STRUCTURE.
		    B.	THE ALGORITHM.
		    C.  PERFORMANCE.

	 	II.
		    A.	TELETYPE COMMANDS.
		    B.	FILE FORMATS.
		    C.	SAIL INTERFACING.
		    D.	LISP INTERFACING.

		III.
		    A.	EDITORIAL REMARKS.
		    B.	CODE DOCUMENTATION.
		    C.	APPENDICES.
	

This  research was supported by the Advanced Research Projects Agency
   of the Office of the Secretary of Defense under contract SD-183.
INTRODUCTION.


	CRE  is  a  solution  to  the  problem  of  finding  all  the
photometric  edges in a sequence of television pictures and linking
such edges from one picture to the next in time.
The process is automatic and is intended to run without human
intervention.   Furthermore, the process is bottom up; there are no
significant  inputs  other  than the given television images.
The output of CRE is a contour map data structure
which is suitable input to GEOMED locus solving routines.

	CRE itself does not involve visual feedback, accommotion,
verification, recognition, wide angle comparison,
photometric normalization, and so on. However, these aspects of computer
vision may become manifest on a system level
of which CRE might be a part.
I. A. DATA STRUCTURE.


	The principle idea of an elevation contour map.
On a contour map of an island fully surrounded by
ocean,  no  two  contour  lines every cross and all the contour lines
close.      Consequently, the loops  of  elevation  contours  enclose
regions; and these regions overlap in a nested fashion forming a tree
data structure.

	One  idea  that  is  emphatically  not  in  CRE  is that of a
schematic line drawing. Although the CRE output can be  viewed  as  a
collection  of  lines  on  a  display screen, people expecting a line
drawing  rendition  of  the  given   television   picture   will   be
disappointed.     A  CRE  picture  is  a  simple  translation  of the
photometry, geometry and topology of the orginal video image. Whereas
the typical line drawing from a human illustrator is a representation
of the scene without photometric information.

	The data structure to be discussed is  implemented  as  small
blocks  of words containing pointers and data in the fashion usual to
graphics and simulation; an introduction to this  technology  can  be
found  in Knuth [1]. The language of implementation is PDP-10 machine
code via the FAIL assembler. The direct explanation of CRE  structure
will  be  presented in three parts: first, the several kinds of nodes
will be briefly explained; second, the sub-structures such as  rings,
trees  and  lists  will  be  discribed;  and third, the detailed node
formats will be given.
TYPES OF NODES.

	The are several types of CRE  nodes:   Vector,  Arc,  Vertex,
Polygon,  Image, Level, Film, Empty and Extra.   At the
very top of all the structure is the film  node,  the  film  node  is
unique  and  serves  as  an  OBLIST from which all other nodes may be
reached.   The film node embodies the idea of a  piece  of  celluloid
film  or a length of magnetic video tape. A film is a sequence
of images taken by the same camera of the  same  scene  with  only  a
small amount of action or difference between images.

	An image node represents the familar two dimensional idea of
a  photograph or oil painting.
Below the image node are the  intensity contour levels.

	A level node represents a binary image that
results  from  thresholding a gray scale image. Polygon nodes express
the notion of the contour lines which  always
close  upon  themselves.  Contour  lines  are  approximated by a ring of
vectors hence the term "polygon".

DIAGRAM OF NODE "IMMEDIACY" BY TYPE:

		FILM
		IMAGES
		LEVELS
		POLYGONS
		VECTORS & ARCS

	Empty  nodes and Extra nodes are artifacts of the fixed block
size dynamic storage allocation mechanism used in CRE.  Entities  are
made  by taking blocks from an AVAIL list of empty nodes and entities
are killed by returning the block to the  AVAIL  list;  there  is  no
garbage  collector,  but  there  is  a space compactor.
Extra nodes are used to provide additional  space  for  the  ARC  and
POLYGON nodes when temporary space is required.
CRE SUB-STRUCTURES:

	FIVE RINGS.
		1. Image Ring of a Film.
		2. Level Ring of an Image.
		3. Polygon Ring of a Level.
		4. Vector Ring of a Polygon.
		5. Arc Ring of a Polygon.

	THREE PAIRS.
		1. Arc↔Vector Pairs.
		2. Vector↔Vector Radial Pairs.
		3. Arc↔Arc Radial Pairs.

	TWO TREES.
		1. The Tree of Rings.
		2. The Polygon Tree.
	
	TWO LISTS.
		1. Time Lists.
		2. The empty node list.
VECTOR ARC NODE FORMAT.

	_____________________________________________ 
	word |        CW         |        CCW        |
	  0  |              vector ring              |
	_____|___________________|___________________|
	word |        ROW        |        COL        |
	  1  |   ∂  0000.00      |   ∂  0000.00      |
	_____|___________________|___________________|
	word |       TYPE        |       RELOC       |
	  2  |   ∂     1         |   ∂  303 313      |
	_____|___________________|___________________|
	word |                   |                   |
	  3  |       ENDO        |        EXO        |
	_____|___________________|___________________|
	word |                   |                   |
	  4  |        ARC        |        PED        |
	_____|___________________|___________________|
	word |                   |                   |
	  5  |   ∂   CNTRST      |       PGON        |
	_____|___________________|___________________|
	word |                   |                   |
	  6  |       NTIME       |       PTIME       |
	_____|___________________|___________________|


POLYGON NODE FORMAT.

	_____________________________________________ 
	word |        CW         |        CCW        |
	  0  |             polygon ring              |
	_____|___________________|___________________|
	word |        DAD        |        SON        |
	  1  |       level       |     1st vector    |
	_____|___________________|___________________|
	word |       TYPE        |       RELOC       |
	  2  |        10         |      333 233      |
	_____|___________________|___________________|
	word |                   |                   |
	  3  |       ENDO        |        EXO        |
	_____|___________________|___________________|
	word |                   |                   |
	  4  |        ARC        |       NCNT        |
	_____|___________________|___________________|
	word |                   |                   |
	  5  |       NGON        |       PGON        |
	_____|___________________|___________________|
	word |                   |                   |
	  6  |       NTIME       |       PTIME       |
	_____|___________________|___________________|
THE VECTOR/ARC/VERTEX NODE.

	The most numerous kind  of  node  is  the  VECTOR/ARC/VERTEX,
which for informal discussion will be called a VERTEX.

Vertices carry the fundamental geometric datum of an image locus. The
image locus is stored in halfword positions named ROW and COL,  which
contain  the  row  and  column of a point in units 1/64 of a pixel. A
"pixel" is a "picture element".

Vertices when used as vectors or  arcs  also  carry  the  fundamental
photometric  datum  of  edge  contrast. Fundamental data is that data
which comes almost irectly from  the  video  image  and  is  used  to
compute other data such face area or region gradient.

Vertices always belong to a polygon node, a pointer to the polygon of
each vertex is stored in the link named PGON; as members of a polygon
the  vertices  form  a perimeter or loop which is always connected so
that each vertex has a neighboring vertex in the clockwise and in the
counter  clockwise  directions  about  the polygon's perimeter. There
perimeter pointers re stored in the link positions named CW and CCW.

	The links named NTIME and PTIME appear in  all  nodes  except
the  film  node;  these  links connect corresponding parts of a given
image with parts of its immediate predecessor image and with parts of
its  immediate  successor image. Time links implement the notion of a
film where each frame differs but little from its neighboring  frames
along the film.
FILM NODE FORMAT.

	_____________________________________________ 
	word |                   |                   |
	  0  |                   |     core size     |
	_____|___________________|___________________|
	word |                   |        SON        |
	  1  |                   |       image       |
	_____|___________________|___________________|
	word |       TYPE        |       RELOC       |
	  2  |   ∂   100         |      011 000      |
	_____|___________________|___________________|
	word |                   |                   |
	  3  |                   |                   |
	_____|___________________|___________________|
	word |                   |                   |
	  4  |                   |                   |
	_____|___________________|___________________|
	word |                   |                   |
	  5  |                   |                   |
	_____|___________________|___________________|
	word |                   |                   |
	  6  |                   |                   |
	_____|___________________|___________________|
IMAGE NODE FORMAT.

	_____________________________________________ 
	word |        CW         |        CCW        |
	  0  |              image ring               |
	_____|___________________|___________________|
	word |        DAD        |        SON        |
	  1  |       film        |       level       |
	_____|___________________|___________________|
	word |       TYPE        |       RELOC       |
	  2  |        40         |      333 333      |
	_____|___________________|___________________|
	word |               face ring               |
	  3  |       NFACE       |       PFACE       |
	_____|___________________|___________________|
	word |               edge ring               |
	  4  |        NED        |        PED        |
	_____|___________________|___________________|
	word |              vertex ring              |
	  5  |        NVT        |        PVT        |
	_____|___________________|___________________|
	word |                   |                   |
	  6  |       NTIME       |       PTIME       |
	_____|___________________|___________________|


LEVEL NODE FORMAT.

	_____________________________________________ 
	word |        CW         |        CCW        |
	  0  |              level ring               |
	_____|___________________|___________________|
	word |        DAD        |        SON        |
	  1  |       image       |      polygon      |
	_____|___________________|___________________|
	word |       TYPE        |       RELOC       |
	  2  |   ∂    20         |  ∂   330 003      |
	_____|___________________|___________________|
	word |                   |                   |
	  3  |                   |                   |
	_____|___________________|___________________|
	word |                   |                   |
	  4  |                   |                   |
	_____|___________________|___________________|
	word |                   |                   |
	  5  |                   |                   |
	_____|___________________|___________________|
	word |                   |                   |
	  6  |       NTIME       |       PTIME       |
	_____|___________________|___________________|
THE ALGORITHM.

	In the large, CRE consists of four steps:     thresholding,
contouring,  smoothing and comparing. The first three steps
perform conversions between four kinds of images:       6-bit  raster
image,  1-bit  raster  image,  vector  intensity  contour  image and arc
contour image.   The  final  step,  comparing,
joins  an  image  to  a  film  of  images by linking the parts of the
cuurent image to the parts of the previous image that compare  nearly
equal.

	MAJOR OPERATION.	OPERAND.	  RESULT.

	1. THRESHOLDING: 	6-BIT-IMAGE 	  1-BIT-IMAGES.
	2. CONTOURING: 	 	1-BIT-IMAGES 	  VIC-IMAGE.
	3. SMOOTHING:	 	VIC-IMAGE 	  ARC-IMAGE.
	4. COMPARING:		IMAGE & FILM	  FILM.
THRESHOLDING.

Thresholding, the first and easiest step, consists of two subroutines:

		1. THRESH:	CUT,TVBUF → PAC
		2. PACXOR:	PAC → HSEG,VSEG

The subroutine THRESH takes an integer argument, 0 < CUT  ≤  63,  and
for  each  pixel in the TVBUF with value equal to or greater than the
cut THRESH sets a bit in PAC. PAC  (picture  accumulator)  is  a  bit
array of 216 rows by 288 columns which takes 1728 words in the TVSEG.

The subroutine PACXOR first copies the PAC into two  slightly  larger
bit  arrays  named  HSEG  and  VSEG,  then it exclusive OR's the PAC,
properly displaced one row or one  column,  into  HSEG  and  VSEG  to
compute the horizontal and vertical border bits of blobs in the PAC.


CONTOURING.

	Contouring, the next major step, converts the bit arrays HSEG
and  VSEG  into  a  node-link data structure that represents an equal
intensity level contour map. Of such contouring, there be  two  minor
steps:  one, that of tracing the contour as a ring of vectors to form
a polygon; and two, that of placing the polygon in the  contour  tree
data structure.

	Although the notion of a contour
map is familiar to everyone as a piece of  paper  from  the  Geodetic
Survey  Office; implementing the notion into a data structure becomes
a magical mystery  tour.  Two  of  the  contouring  mysteries  to  be
discussed are jaggies and nesting. The jaggies problem involves doing
something to a rectilinear quantized set of  segments,  to  make  its
linear  nature more evident. The jaggies solution in CRE is called
the  dekinking,  and  merely   involves   vernier   positioning   the
right-turns as will be explained below.

	A JAGGY ILLUSTRATED.

			___
			   |___
			       |____
				    |___
				        |___

The nesting problem involves  comparing  two  polygons  and  deciding
whether  one  is within the other; although easy in an isolated case,
solving alot of nesting becomes very expensive in compute time or  in
memory space. The nesting solution in CRE is a fast big memory one
involving a 62K array, called the SKYSEG.


SMOOTHING.

BUNDLING.
PERFORMANCE
ALPHABETIC SUMMARY OF TELETYPE COMMANDS.


"A"	Toggle Arc Make flag.
"B"	Drive the cart backwards.
"C"	Cut intensity level.

"D"	Toggle baby polygon delete flag.
"E"	Select Edge Display.
"F"	Drive the cart forwards.

"G"
"H"	Display histogram.
"I"	Input TV picture from a disk file.

"J"	Contour TV image at levels 6% from ends of histogram.
"K"	Toggle Krakauer flag.
"L"	Set cart steering to hard left position.
"αL"	Pan cart camera to the left.

"M"
"N"	Next image.
"O"	Output TV file.
"αO"	Output CRE file.
"P"	Plot file output to disk the current III display buffer.

"Q"	Contour TV image at equally spaced levels.
"R"	Set cart steering to hard right position.
"αR"	Pan cart camera to the right.
"S"	Select camera number.

"T"	Take 4-bit television picture.
"αT"	Take 6-bit television picture.
"U"	Toggle KILVIC enable flag.
"V"	Enter cart diagnostic sub command mode.

"W"	Alter Arc width table.
"X"	XGP output.

"Y"	Display arc-contour.
"αY"	Display both-contour.
"βY"	Display vector-contour.
"εY"	Display vector contour without dekinking.

"Z"	Zero data structure.
"αZ"	Zoom Reset to initial display position.
SUMMARY OF BASIC COMMANDS.

	"T"	Take a 4-bit television picture.
	"H"	Display histogram.

	"Q"	Make CRE image, from three intensity cuts.
	"C 00"	Make CRE image by thresholding at 00.

	"O"	Output television picture.
	"αO"	Output CRE file.
	"X"	Output video to XGP.
TELEVISION PICTURE IO COMMANDS.

	"T"	Take a 4-bit video image from camera.
	"αT"	Take a 6-bit video image from camera.

	"S"	Select television camera.

	"O"	Output video image file to disk.
	"I"	Input  video image file from disk.
LINK FOLLOWING COMMANDS  &  NODE CONTENTS DISPLAY.

	These 14 commands allow detailed inspection of the  CRE  data
structure by showing the contents of a node. Data halfwords of a node
are displayed in octal;  link  halfwords  are  displayed
prefixed  with a letter indicating the type of node being pointed at;
a zero link is displayed as "NIL".

The FILM node, which is the root  of  the  whole  data  structure  is
fetched  and  displayed  by  the  "+" command. From the Film, the ">"
command can be used to get SON(FILM) which is always the first image,
and  ">" command of an image will get a level and ">" of a level will
get a polygon. Now vectors, polygons, edges and faces are intensified
when  their  contents  are  being displayed. The exit command is "!",
which leaves the screen less cluttered.


	NODE CONTENTS DISPLAY
	INITIATION & TERMINATION COMMANDS.

		"+"	Fetch Film Node.
		"!"	Flush diagonostic node display.


      WORD     NODE FETCH
     POSITION   COMMAND      NAMES OF LINKS AT THIS WORD.

	0.	","  "."	CW,,CCW
	1.	"<"  ">"	DAD,,SON
	2.			There is never a link at this word.
	3.	"↓"  "↑"	NFACE,,PFACE   or   ENDO,,EXO
	4.	"≤"  "≥"	NED,,PED   or   ARC,,PED
	5.	"←"  "→"	NVT,,PVT   or   NGON,,PGON
	6.	"⊂"  "⊃"	NTIME,,PTIME
DISPLAY WINDOW SCROLLING COMMANDS.

	;	MOVE CAMERA LEFT.
	:	MOVE CAMERA RIGHT.
	(	MOVE CAMERA DOWN.
	)	MOVE CAMERA UP.
	-	SHRINK IMAGE - ZOOM OUT.
	*	MAGNIFY IMAGE - ZOOM IN.
	αZ	RESET SCROLL VALUES.
	/	HALVE STRENGTH OF SCROLLING DELTA.
	\	DOUBLE STRENGTH OF SCROLLING DELTA.

DISPLAY MODES.

	"Y"	DISPLAY ARC POLYGONS ONLY.
	"βY"	DISPLAY VECTOR POLYGONS ONLY.
		(which usually do not exist unless the "U" command
		prevented their being deleted after being used.)
	"αY"	DISPLAY BOTH ARC & VECTOR POLYGONS.
	"εY"	DISPLAY VECTOR POLYGONS WITHOUT DEKINKING.

IMAGE OUTPUT COMMANDS.

	"X"	Output video image on Xerox Graphics Printer.
	"P"	Output III plot file to disk.
OPERATIONAL SUMMARY OF CRE TELETYPE COMMANDS.
	
INPUT/OUTPUT.
	
CART-CONTROL.
	
DISPLAY-CONTROL.
	
CONTOURING.
	"C"	cut at level.
	"Q"	equally spaced contours.
	"J"	Make two contour with respect to per centage from
		ends of histogram.

 "Q"  -  3 CUTS:            20,         40,         60.
"αQ"  -  7 CUTS:      10,   20,   30,   40,   50,   60,   70.
"βQ"  -  8 CUTS:   04,   14,   24,   34,   44,   54,   64,   74.
"εQ"  - 15 CUTS:   04,10,14,20,24,30,34,40,44,50,54,60,64,70,74.
CART CONTROL COMMANDS  &  OPERATING THE CART.

	There are seven cart commands: drive  forwards,  drive
backwards,  turn  left, turn right, pan camera left, pan camera right
and halt:

	"F"	Drive Cart Forwards for one minute.
	"B"	Drive Cart Backwards for one minute.
	"L"	Turn steering wheels hard to left.
	"R"	Turn steering wheels hard to right.
	"αL"	Pan camera to the left for 10 seconds.
	"αR"	Pan camera to the right for 10 seconds.
	" "	Halt and continue spacewar job on PDP-6.
	"0"	Halt and continue spacewar job on PDP-6.
	carriage return	 -  Halt and stop spacewar job on PDP-6.
	

First  and  most important is understanding how to stop the cart. The
teletype halt command is " ", spacebar, or "0";  also  any  character
other  than  "F",  "B", "L", or "R" will stop the cart. Cart commands
are passed first from a teletype to the PDP-10, then  to  the  PDP-6,
then  over  a citizens band, 27.045 megahertz, radio link to the cart
control  logic;  and  so  when  communications  are  lacking  between
entities  in  the  chain  of command the lower entities times out and
causes the cart to halt. The cart control logic times out in a  fifth
of  a  second if it does not hear from the PDP-6; the PDP-6 times out
in less than a minute if it has not heard from the PDP-10; the  PDP-6
also  stops broadcasting cart commands if it detects the death of the
PDP-10; the PDP-10 job times out after 5 minutes of  not  hearing
from the teletype and kills the PDP-6 spacewar job.

II. FILE FORMATS.
	A. Television Image Format.
	B. Region/Edge Image Format.

A. Television Image Format.

	The standard Cart's Eye television image is
216 rows of 288 columns of 4 bits per pixel.

B. Contour/Region/Edge Image Format.

	The  image format, CRE, is essentially a core dump
of CRE's internal node/link data structure. There are  eight kinds
of  nodes  and the nodes are  fixed  sized  at six  words  per node.

From  the  top,  the  first  node of a file  is always a "FILM" node.
The  head  of  a  film  node  points to  a  ring  of  "IMAGE"  nodes.
The head of  an  image  node  points  to a  ring  of  "LEVEL"  nodes.
The head of a  level  node  points  to  a  ring  of "POLYGON"  nodes.
The head of  a  polygon  node  points  to  a  ring  of "EDGE"  nodes.
And  edge  nodes  do not have a head pointer.  Which is equivalent to
saying that a file contains a film, a film is composed of images,  an
image  is  composed  of levels, a level is composed of polygons and a
polygon is composed of edges.

	Now the detailed explanation will proceed bottom-up, starting
with the most numerous edge nodes.

	File names are accepted in the usual DEC format of name, dot,
extension,  left  square  bracket,  project, comma, programmer, right
square bracket, carriage return line feed. Where the filename is from
one  to  six characters; and the extension project and programmer are
from  one  to  three  characters.  Everything  but  the  filename  is
optional.
V. SAIL INTERFACING.

	It should be possible to embed the CRE machine code  under  a
SAIL  core  image;  however  I do not intend to do this work. For the
present, the CRE interface to SAIL is only realized via a  disk  file
transfer  of  the  data  structures.  A  CRE file may be read into an
integer array in binary mode as illustrated below.

	The  first  word  of a CRE file is the first word of the film
node which contains the size of the file in words. The film node  has
address  0;  the  next node has address 7; and so on in multiplies of
seven.  There are no empty nodes in a CRE file.  The  following  SAIL
program will read in a CRE file named X:

	COMMENT EXAMPLE OF SAIL INPUT OF A CRE FILE;
	BEGIN	"TEST"
		INTEGER SIZE;
		OPEN(1,"DSK",8,3,0,0,0,0);
		LOOKUP(1,"X.CRE",0);
		SIZE ← WORDIN(1);
	BEGIN
		INTEGER ARRAY NODE[0:SIZE];
		ARRYIN(1,NODE[1],SIZE-1);
		RELEASE(1);
		"MAIN PROGRAM.";
	END;
	END;

After the NODE array is loaded, CRE links and data may be accessed by
their  document names in a reasonible node-link notation using macros
like the following:

	DEFINE CW(Q)  = "(NODE[Q] LSH -18)";
	DEFINE CCW(Q) = "(NODE[Q] LAND '777777)";
	DEFINE DAD(Q) = "(NODE[Q+1] LSH -18)";
	DEFINE SON(Q) = "(NODE[Q+1] LAND '777777)";

So  that  the first vertex of the first polygon of the first level of
the first image of the film can be obtained:

	INTEGER FILM,IMAGE,LEVEL,POLYGON,VERTEX;

	FILM ← NODE[0];
	LEVEL ← SON(FILM);
	POLYGON ← SON(LEVEL);
	VERTEX ← SON(POLYGON);

The  user may note that SAIL will compile three or more instructuions
for what is known as a PDP-10 halfword operation; also  if  the  user
converts  the  CRE  nodes  and links into LEAP items and associations
then an  overhead  of  from  ten  to  one  hundred  instructions  per
"halfword operation" will be incurred.
EDITORIAL REMARKS.


1.	
	The version of CRE discussed in this document is known  to
me  as the third, or the version of Christmas-72. CAREYE-I of '68 and
'69 was embedded in  LISP  and  contained  thresholding,  bit  raster
operations,  and  a  polygon trace routine. CAREYE-II was embedded in
SAIL, and in early forms even used LEAP. Both CAREYE-I and  CAREYE-II
were   built   around   the  notion  of  "windowing".  CAREYE-IV,  of
Thanksgiving-72 was was scan line oriented.


3.
	It is my impression that all the so called "scientific" ideas
in CRE have appeared elsewhere. In particular, I was aware of  and
kind   of  liked  the  work  of  Krakauer,  Zahn,  and  Mc  Cormick's
ILLAIC-III.  Also, I was aware of and disliked the work of Pingle and
Hueckel.  I  wish  to  acknowledge  all these people from whom I have
borrowed ideas, both positive and negative.  On  the  other  hand,  I
alone wrote and developed all the code in CRE.


6. ANTI VARIABLE WINDOWING.

	The  requirement  that  a vision program must handle variable
sized windows is a severe limitation which has  bogged
down potentially good image processing ideas in a morass of word
packing, array binding, window splicing, and cost  optimization;
not directly relevant to image processing.

7. ANTI VISUAL FEEDBACK ON THE TACTICAL LEVEL.

A  vision  system  must  have  feedback,  accomodation,   prediction,
verification, and higher level knowledge. The pursuit of this visual
feedback format seems to lead one to work solely on building a forest
without worrying about how to build a tree.

8. ANTI HIGHER LEVEL LANGUAGES & PRO MACHINE CODE.

	Another banal truism in AI is that a  higher  level  language
allows   rapid  implementation  and  experimental  change  of  poorly
understood algorithms.
CODE DOCUMENTATION.

	The CRE code uses additional PDP-10 mnemonics for the sake of
pronouciation  and  brevity.  The  mnemonics  stem from ancient PDP-1
nomenclature; in the PDP-10 the left half  word  is  the  instruction
part  and  the right half word is the address part. The codes CAR and
CDR are traditional LISP names, derived  from  IBM-709  nomenclature;
CAR  and  CDR  are appropriate PDP-6/10 op codes because according to
Kotok,the machine was designed to facilitate LISP.

	HLR	LIP	Load Instruction Part.
	HRR	LAP	Load Address     Part.
	HRLM	DIP	Deposit in Instruction Part.
	HRRM	DAP	Deposit in Instruction Part.

	HRRZS	ZIP	Zero Instruction Part.
	HLLZS	ZAP	Zero   Address   Part.
	HRROS	WIP	W'ones to Instruction Part.
	HLLOS	WAP	W'ones to   Address   Part.

	HLRZ	CAR	Contents Address Register.
	HRLI	LIPI	Load Instruction Part Immediate.
	HRRI	LAPI	Load   Address   Part Immediate.
	HRLZM	DIPZ	Deposit into Instruction Part with Zeroes.
	
	HRRZ	CDR	Contents Decrement Register.
	MOVEI	LACI	Load Accumulator Immediate.
	MOVSI	SLACI	Swap Load Accumulator Immediate.
	HRRZM	DAPZ	Deposit into Address Part with Zeroes.
	
	MOVE	LAC	Load Accumulator.
	MOVN	LACN	Load Accumulator Negative.
	MOVM	LACM	Load Accumulator Magnitude.
	MOVS	SLAC	Swap Load Accumulator.
	
	MOVEM	DAC	Deposit Accumulator into memory.
	MOVNM	DACN	Deposit Accumulator Negative.
	MOVMM	DACM	Deposit Accumulator Magnitude.
	MOVSM	SDAC	Swap Deposit Accumulator.
	
	HLRE	NIP	Number from Instruction Part.
	HRRE	NAP	Number from   Address   Part.
	HRREI	NIM	Number Immediate.
	JRST	GO	Load program counter immediate.
REFERENCES.

	KNUTH
	KRAKAUER
	GEOMED SAILON
	WINGED EDGE PAPER